package com.dc.designPattern._19_interpreter.impl;

import lombok.AllArgsConstructor;
import lombok.Data;

import java.util.Map;

/**
 * Description: 解释器模式_非终结符表达式_抽象符号解释器
 *  每个预算符号，都之和自己左右两个数字有关系
 *  但是左右的两个数字有可能也是一个解析的结果，无论何种类型，都是 Expression类的实现类
 *
 * @author: gdc
 * @date: 2021/6/8
 * @version 1.0
 */
@Data
@AllArgsConstructor
public abstract class SymbolExpression implements Expression{

    /**
     * 符号左边的表达式（数）
     */
    protected Expression left;
    /**
     * 符号右边的表达式（数）
     */
    protected Expression right;

    /**
     * 由于 SymbolExpression 是由其子类来实现，因此 interpreter 是一个默认实现
     * @param var           公式参数、值
     * @return              结果
     */
    @Override
    public int interpreter(Map<String, Integer> var) {
        return 0;
    }
}
